GCNet: Non-local Networks Meet Squeeze-Excitation Networks and Beyond
Abstract
- 发现在NL中,不同位置的query得到的反馈几乎是一样的
- 本文提出基于query-independent formulation的简单网络,在保持NLNet精确度的同时大大减少了计算量。
- 由于本文结构与SENet有着蕾丝的结构,因此本文将二者结合得到一个三步的全局上下文建模方法。
Introduction
- 在NL中,对于每个位置query,模块输出该位置与所有位置的两两关系,产生注意力矩阵,再将各位置的特征加权求和累加在query位置上。
- 但是在可视化分析中发现,不同位置query得到的注意力矩阵几乎是一样的,这表明学习到的只是与query无关的依赖关系。
- 基于上述观察,本文简化了NL块,对所有位置使用一致的注意力矩阵,减少了大量的计算,同时没有精度损失。
- SENet与简化后的NL类似,区别在于聚合、变换、加强特征等方法的选用。将这些方法抽象化,得到一个三步框架。
- context modeling module:聚合所有位置的特征得到全局特征。
- feature transform module:捕捉通道间的依赖关系。
- fusion module:合并全局信息与各位置的信息。
Analysis on Non-local Networks
- NL公式:$\mathbf{z}{i}=\mathbf{x}{i}+W_{z} \sum_{j=1}^{N_{p}} \frac{f\left(\mathbf{x}{i}, \mathbf{x}{j}\right)}{\mathcal{C}(\mathbf{x})}\left(W_{v} \cdot \mathbf{x}{j}\right)$,$\omega{i j}=\frac{f\left(\mathbf{x}{i}, \mathbf{x}{j}\right)}{\mathcal{C}(\mathbf{x})}$,Embedded Gaussian版本:$\omega_{i j}=\frac{\exp \left(\left\langle W_{q} \mathbf{x}{i}, W{k} \mathbf{x}{j}\right\rangle\right)}{\sum{m} \exp \left(\left\langle W_{q} \mathbf{x}{i}, W{k} \mathbf{x}{m}\right\rangle\right)}$。最后一个卷积$W{z}$加不加没有多大影响。
- NL可看作全局信息建模单元,将所有位置的信息加权君合到每个像素位置。复杂度是位置个数的四次方。
- 对比输出特征矩阵之间的余弦距离可以发现不同位置得到的注意力矩阵相差不大。
Method
Simplify NL Block
- 简化:$\mathbf{z}{i}=\mathbf{x}{i}+\sum_{j=1}^{N_{p}} \frac{\exp \left(W_{k} \mathbf{x}{j}\right)}{\sum{m=1}^{N_{p}} \exp \left(W_{k} \mathbf{x}{m}\right)}\left(W{v} \cdot \mathbf{x}_{j}\right)$
- 进一步简化降低复杂度,将$W_{v}$移到注意力模块后,最后的卷积复杂度从O(HWC^2)降低到O(CxC):$\mathbf{z}{i}=\mathbf{x}{i}+W_{v} \sum_{j=1}^{N_{p}} \frac{\exp \left(W_{k} \mathbf{x}{j}\right)}{\sum{m=1}^{N_{p}} \exp \left(W_{k} \mathbf{x}{m}\right)} \mathbf{x}{j}$
- 上述公式的第二项直接建模全局信息,并直接叠加到原本的各个像素位置。将原本的NL块替换为简化后的版本,精度没有太大损失。
Global Context Modeling Framework
- 最简化的NL Block可分为三步
- global attention pooling:通过$W_{k}$和Softmax得到注意力权重,完成全局注意力池化
- feature transform: 1x1卷积$W_{v}$,建模通道间的依赖。
- feature aggregation:每个元素累加全局特征
- 公式化:$\mathbf{z}{i}=F\left(\mathbf{x}{i}, \delta\left(\sum_{j=1}^{N_{p}} \alpha_{j} \mathbf{x}_{j}\right)\right)$,对应上图a。
- SENet同样遵循上述流程。
Global Context Block
- 结合NL的长距离依赖和SE的轻量级优势
- 将SNL中的1x1卷积$W_{v}$替换为SE中的bottleneck减少计算量(CxC -> 2 x C x C/r)RELU前添加layer norm。
- 另一个角度相当于将SE中的全局池化换成SNL的1x1卷积+softmax。
公式:$\mathbf{z}{i}=\mathbf{x}{i}+W_{v 2} \operatorname{Re} \mathrm{L} \mathrm{U}\left(\mathrm{LN}\left(W_{v 1} \sum_{j=1}^{N_{p}} \frac{e^{W_{k} \mathbf{x}{j}}}{\sum{m=1}^{N_{p}} e^{W_{k} \mathbf{x}{m}}} \mathbf{x}{j}\right)\right)$
三步:
- 全局注意力池化
- bottleneck捕捉通道间依赖
- 元素级加和聚合
- GC-ResNet-50增加了9.89%的参数,0.26%的浮点运算。
实验
- GC Block插入位置不敏感
- 在所有阶段使用好过单一阶段
- 池化-聚合的策略:att+add > avg+add > att+scale > avg+scale (SE)